package org.example.infra.service;

import org.example.infra.entity.DataEntity;

import java.util.List;

/**
 * Description: iotdb 服务层
 * Created by 陈宇 on 2024-12-25 16:44
 * Created with IntelliJ IDEA.
 * @author 陈宇
 */
public interface IotDbMybatisService {

    /**
     * 计数
     * @param deviceId
     * @return
     */
    Integer selectCount(String deviceId);

    /**
     * 根据仓库 id，查询仓库名称
     * @param repoId
     * @return
     */
    List<DataEntity> queryRepoName(String repoId);


    /**
     * 根据仓库 id 指定仓库，获取到其在指定时间之前所有 pr id
     * @param repoId
     * @param userId
     * @param currentMillis
     * @param nextMillis
     * @return
     */
    List<DataEntity> queryPRs(String repoId, String userId, long currentMillis, long nextMillis);

    /**
     * 根据仓库 id 指定仓库，获取到其在指定时间之前所有  issue id
     * @param repoId
     * @param userId
     * @param currentMillis
     * @param nextMillis
     * @return
     */
    List<DataEntity> queryIssues(String repoId, String userId, long currentMillis, long nextMillis);

    /**
     * 根据 prCommentId，查看发表的评论内容
     * @param prCommentId
     * @return
     */
    String queryPrCommentBody(Long prCommentId);

    /**
     * 根据 issueCommentId，查看发表的评论内容
     * @param issueCommentId
     * @return
     */
    String queryIssueCommentBody(Long issueCommentId);

    /**
     * 获取贡献者数量
     * @param repoId
     * @param nextMillis
     * @return
     */
    int getContributorCount(String repoId, long nextMillis);

    /**
     * 获取 issue 数量
     * @param repoId
     * @param nextMillis
     * @return
     */
    int getIssueCount(String repoId, long nextMillis);

    /**
     * 获取 pr 数量
     * @param repoId
     * @param nextMillis
     * @return
     */
    int getPrCount(String repoId, long nextMillis);

    /**
     * 获取 star 数量
     * @param repoId
     * @param nextMillis
     * @return
     */
    int getStarCount(String repoId, long nextMillis);

    /**
     * 获取 fork 数量
     * @param repoId
     * @param nextMillis
     * @return
     */
    int getForkCount(String repoId, long nextMillis);

    /**
     * 获取代码行
     * @param repoId
     * @param date
     * @return
     */
    long getCodeLine(String repoId, String date);
}
